Una routine di programmazione scritta in modo da poter essere condivisa
contemporaneamente da programmi diversi. Viene usata nei sistemi operativi
e in altri software di sistema (come nei driver) dove diverse azioni si
sviluppano in contemporanea e devono essere monitorate e bloccate da
qualche meccanismo di controllo centrale. Mentre un programma sta
eseguendo una porzione di codice rientrante, un altro programma può
interromperne lÆazione, iniziarla daccapo oppure continuarla dal punto in
cui è stata lasciata a metà. La routine rientrante è scritta in modo che
nessuna delle sue porzioni di codice sia modificabile (non cambia nessuno
dei valori contenuti nella routine) e così che la routine medesima non
tenga traccia del proprio progresso. Trattandosi di un elemento
invariabile, la routine può quindi risiedere in memoria in copia singola
ed essere utilizzata da tutti i programmi che ne hanno bisogno. Spetta al
programma chiamante tenere traccia del progresso della routine e
intraprendere azioni correttive qualora questa si blocchi. Perciò, durante
lÆesecuzione della routine, si tengono copie separate dei dati associati a
quella particolare esecuzione.
Di conseguenza, la stessa copia della routine può essere utilizzata più
volte e contemporaneamente da un numero indefinito di processi o di
utenti, a condizione di avere in memoria lo spazio necessario per
contenere le informazioni temporanee.
A livello esemplificativo, è come se diverse persone stessero preparando
un piatto di spaghetti facendo riferimento alla stessa ricetta, ma tenendo
appunti separati sul suo progresso. Gli ingredienti e la ricetta
resterebbero sempre invariati, ma ciascuno di loro dovrebbe tener traccia
autonomamente del progresso compiuto.
|